﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Logic.Linq;
using System.Data.SqlTypes;
using System.IO;
using DevExpress.Web.ASPxGridView.Export;
using System.Configuration;

namespace Crosland.Automotriz.Web.Repuestos
{

    public partial class wFrmPronosticoImportacionSeguimientoNuevo : System.Web.UI.Page
    {
        string idNegocio = ConfigurationManager.AppSettings["Negocio"];
     static DataTable ds = new DataTable();
     static DataTable dsD = new DataTable();

     static List<tablaNoRegistrados> listaTabla;
      private static String RutaExcel = "";
     clsImportacionesLogic importacionLogic = new clsImportacionesLogic();

        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack){

                listaLogImportacionDet();
                this.ListaAuxiliar();
                ds.Rows.Clear();
                cboanio.Text = Convert.ToString(DateTime.Now.Year);
                //this.CargarGrilla("3");
                ListaPronosticoImp();

                listaTabla = new List<tablaNoRegistrados>();
                ds.Columns.Clear();


                DataColumn codigo = new DataColumn();
                codigo.DataType = System.Type.GetType("System.String");
                codigo.ColumnName = "Codigo";

                DataColumn descripcion = new DataColumn();
                descripcion.DataType = System.Type.GetType("System.String");
                descripcion.ColumnName = "Descripcion";

                DataColumn cantidad = new DataColumn();
                cantidad.DataType = System.Type.GetType("System.Decimal");
                cantidad.ColumnName = "Cantidad";

                DataColumn fobme = new DataColumn();
                fobme.DataType = System.Type.GetType("System.Decimal");
                fobme.ColumnName = "Fob";
                DataColumn total = new DataColumn();
                total.DataType = System.Type.GetType("System.Decimal");
                total.ColumnName = "Total";
                total.Expression = "Cantidad * Fob";

                DataColumn caja = new DataColumn();
                caja.DataType = System.Type.GetType("System.String");
                caja.ColumnName = "Caja";





                ds.Columns.Add(codigo);
                ds.Columns.Add(descripcion);
                ds.Columns.Add(cantidad);
                ds.Columns.Add(fobme);
                ds.Columns.Add(total);
                ds.Columns.Add(caja);

                DataRow row = ds.NewRow();
                //row["Caja"] = SqlString.Null;
                ds.Rows.Add(row);
                //DataView view = new DataView(ds);
                dgExcel.DataSource = ds;

                gvBuscarPopup.FocusedRowIndex = -1;

            }

            dgExcel.DataSource = ds;
            dgExcel.DataBind();

        }

        protected void cmdCancelar_Click(object sender, EventArgs e)
        {
            ds.Columns.Clear();
            Response.Redirect("~/Repuestos/wFrmPronosticoImportacionSeguimientoImportancion.aspx?id=" + idNegocio);
        }

        protected void cmdImportar_Click(object sender, EventArgs e)
        {

            ds.Clear();
            if (RutaExcel.Length == 0)
            {

                return;
            }
            else
            {
                cargar_Grid2(RutaExcel);

            }
        }
  
     

        public void cargar_Grid2(string filePath)
        {
            try
            {


                

                System.Data.OleDb.OleDbConnectionStringBuilder builder = new System.Data.OleDb.OleDbConnectionStringBuilder();
                builder.DataSource = filePath;
                builder.Provider = "Microsoft.ACE.OLEDB.12.0";
                builder["Extended Properties"] = "Excel 8.0;HRD=Yes;IMEX=1";

                System.Data.OleDb.OleDbConnection oledbConn = new System.Data.OleDb.OleDbConnection(builder.ConnectionString);
                string strSQL = "SELECT CODIGO,DESCRIPCION,CANTIDAD,FOB,CAJA FROM [Hoja1$]";

                System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(strSQL, oledbConn);

                System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(cmd);
                da.Fill(ds);

                dgExcel.DataSource = ds;               
                dgExcel.DataBind();
                dgExcel.Visible = true;




            }
            catch(Exception ex)
            {

                string script = "ShowPopupPopupFormarto();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                dgExcel.Visible = false;
                dgExcel.DataSource = null;
                dgExcel.DataBind();
            }

        }


        void listaLogImportacionDet() {
      clsLog_Tipo_PedidoLogic clslog_imp_tipo_pedido = new clsLog_Tipo_PedidoLogic();


      cboTipoCarga.DataSource = clslog_imp_tipo_pedido.listar();
      cboTipoCarga.ValueField = "TIPO_PEDIDO";
      cboTipoCarga.TextField = "DES_TIPO_PEDIDO";
        cboTipoCarga.DataBind();
        
        
        }

        void ListaAuxiliar() { 
        clsTD_AuxiliarLogic clstd_auxiliar=new clsTD_AuxiliarLogic();
        cboProveedor.DataSource = clstd_auxiliar.listar();
        cboProveedor.ValueField = "ID_AUXILIAR";
        cboProveedor.TextField = "DES_AUXILIAR";
        cboProveedor.DataBind();
        
        }


        void ListaPronosticoImp() {
            ActualizarPedidoLogic actualizapedido=new ActualizarPedidoLogic();
            gvBuscarPopup.DataSource = actualizapedido.listarCab_Filtro(Convert.ToInt32(DateTime.Now.Year),3);
            gvBuscarPopup.DataBind();
        
        
        }


       



        protected void ucCargarExcel_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
        {
            try
            {
               if (e.IsValid)
                       {
        

                string filePath = Server.MapPath("~/Archivos Excel/" + e.UploadedFile.FileName);
                e.UploadedFile.SaveAs(filePath);
                RutaExcel = filePath;
        
            }
            }
            catch 
            {
            
            }

          
        }

        protected void dgExcel_PageIndexChanged(object sender, EventArgs e)
        {
            cargar_Grid2(RutaExcel);
        }

        protected void cmdGrabar_Click(object sender, EventArgs e)
        {
            try
            {

                if (dtpFechaEmbarque.Date < dtpFechaPed.Date || dtpFechaLlegadaEst.Date < dtpFechaEmbarque.Date)
                {

                    string script = "ShowCreateAccountWindow4();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);


                }
                else if (txtNumPedido.Text == string.Empty || cboProveedor.Text == string.Empty || dtpFechaEmbarque.Text == string.Empty || dtpFechaPed.Text == string.Empty || dtpFechaLlegadaEst.Text == string.Empty)
                {

                    string script = "ShowCreateAccountWindow5();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                }
                else if (dgExcel.VisibleRowCount < 0)
                {

                    string script = "ShowCreateAccountWindow5();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                }
                else
                {


                    this.GrabarDatos();
                    //ds.Clear();


                }         


            }
            catch 
            {
                
              
            }


           
        }


        void DatosNoGrabado() {

            try
            {

                tablaNoRegistrados obj = new tablaNoRegistrados();
                clsImportacionesLogic importacionLogic = new clsImportacionesLogic();

                var c = from p in importacionLogic.BusquedaImportacionDet(txtNumPedido.Text)
                        where p.NUM_PEDIDO == txtNumPedido.Text
                        select p;
                foreach (var s in c)
                {
                    obj.COD_MATERIAL = s.COD_MATERIAL;
                    obj.DES_MATERIAL_IMP = s.DES_MATERIAL_IMP;


                    listaTabla.Add(obj);
                }


                GvDatosNoRegistrador.DataSource = listaTabla;
                GvDatosNoRegistrador.DataBind();


            }
            catch 
            {
                
               
            }


            
        }


        void MostrarDatosReporte() {

            try
            {
             ClsLogImportacionNoGrabadosLogic.list = importacionLogic.BusquedaImportacionDet(txtNumPedido.Text);
            }
            catch 
            {
                
             
            }


          
           
        }

     
        void GrabarNoRegistrador()
        {

            foreach (tablaNoRegistrados row in listaTabla)
            {
               
                T_MATERIAL_POR_ASIGNAR t_material = new T_MATERIAL_POR_ASIGNAR();
                clsT_MaterialPorAsignarLogic t_material_logic = new clsT_MaterialPorAsignarLogic();
                try
                {

                t_material.COD_MATERIAL = row.COD_MATERIAL;
                t_material.DES_MATERIAL_IMP = row.DES_MATERIAL_IMP;
                t_material_logic.Insertar(t_material);
          

                }
                catch 
                {                    
                  
                }


            }
        }



        public struct tablaNoRegistrados{
            public string COD_MATERIAL { get; set; }
            public string DES_MATERIAL_IMP { get; set; }
     
        }


        void EliminarLogNull() {

            try
            {

            clsImportacionesLogic importacionLogic = new clsImportacionesLogic();

            importacionLogic.PA_ELIMINAR_LOG(txtNumPedido.Text);
            }
            catch 
            {
            
            }




        
        }





        void GrabarDatos()
        {


            try
            {

                clsImportacionesLogic ImportacionBL = new clsImportacionesLogic();
                LOG_IMPORTACIONES impcab_ent = new LOG_IMPORTACIONES();
                List<LOG_IMPORTACIONES_DET> impdet_ent = new List<LOG_IMPORTACIONES_DET>();

                impcab_ent.ID_ORG_VTA = 2;
                if (impcab_ent.NRO_PRONOSTICO == null)
                {

                    impcab_ent.NRO_PRONOSTICO = null;
                }
                else
                {
                    impcab_ent.NRO_PRONOSTICO = Convert.ToInt32(txtnumeroPronostico.Text);
                }
                impcab_ent.NUM_PEDIDO = txtNumPedido.Text;
                impcab_ent.ID_OFI_VTA = "001";
                impcab_ent.FEC_PEDIDO = dtpFechaPed.Date;
                impcab_ent.FEC_EMBARQUE_EST = dtpFechaEmbarque.Date;
                impcab_ent.FEC_EMBARQUE = dtpFechaEmbarque.Date;
                impcab_ent.FEC_LLEG_PUERTO = dtpFechaLlegadaEst.Date;
                impcab_ent.FEC_LLEG_EST_PUERTO = dtpFechaLlegadaEst.Date;
                impcab_ent.FEC_LLEG_ALMACEN = dtpFechaLlegadaEst.Date;
                impcab_ent.COD_IMP_ESTADO = "01";
                impcab_ent.COD_VIA_TRANSPORTE = "01";
                impcab_ent.OBSERVACION = txtObservaciones.Text;
                impcab_ent.ID_PROVEEDOR = Convert.ToInt32(cboProveedor.SelectedItem.Value);
                impcab_ent.FACTOR_IMP = (decimal)0.0;
                impcab_ent.NRO_POLIZA = "";
                impcab_ent.NRO_TITULO = "";
                impcab_ent.FEC_TITULO = DateTime.Now;
                impcab_ent.FEC_POLIZA = DateTime.Now;
                impcab_ent.IND_SKD = 2;

                int i = 0;
                try
                {
                    while (i <= dgExcel.VisibleRowCount - 1)
                    {
                        LOG_IMPORTACIONES_DET ImportacionDetalle = new LOG_IMPORTACIONES_DET();

                        ImportacionDetalle.NUM_PEDIDO = txtNumPedido.Text;
                        ImportacionDetalle.COD_TIPO_PEDIDO = Convert.ToString(cboTipoCarga.SelectedItem.Value);
                        ImportacionDetalle.NUM_ITEM_PED = (int)i + 1;
                        ImportacionDetalle.COD_MATERIAL = Convert.ToString(dgExcel.GetRowValues(i, "Codigo"));
                        ImportacionDetalle.DES_MATERIAL_IMP = dgExcel.GetRowValues(i, "Descripcion").ToString();

                        ImportacionDetalle.CAJA = dgExcel.GetRowValues(i, "Caja").ToString();

                        ImportacionDetalle.CANT_IMP = Convert.ToDecimal(dgExcel.GetRowValues(i, "Cantidad"));
                        ImportacionDetalle.FOB_ME = Convert.ToDecimal(dgExcel.GetRowValues(i, "Fob"));
                        ImportacionDetalle.TOTAL_FOB_ME = ImportacionDetalle.CANT_IMP * ImportacionDetalle.FOB_ME;
                        impdet_ent.Add(ImportacionDetalle);
                        i = i + 1;
                    }

                }
                catch
                {}


                if (ImportacionBL.Insertar(impcab_ent, impdet_ent))
                {
                    this.MostrarDatosReporte();
                    this.DatosNoGrabado();
                    this.GrabarNoRegistrador();
                    this.EliminarLogNull();
                    //this.exportarArchivoPlano();   


                    if (GvDatosNoRegistrador.VisibleRowCount == 0)
                    {
                        string script = "ShowCreateAccountWindow();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                    }
                    else
                    { string script = "ShowPopupVerReporte();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    }

                }
                else
                {
                    string script = "ShowCreateAccountWindow3();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    return;
                }






            }
            catch 
            {
                
             
            }

            
        }




   

        protected void gvBuscarPopup_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            //CargarGrilla("3");
        }


        protected void gvBuscarPopup_PageIndexChanged(object sender, EventArgs e)
        {
            //CargarGrilla("3");
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            txtnumeroPronostico.Text = Convert.ToString(gvBuscarPopup.GetRowValues(gvBuscarPopup.FocusedRowIndex, "Nro_Pronostico"));
        }

        protected void gvBuscarPopup_FocusedRowChanged(object sender, EventArgs e)
        {
            txtnumeroPronostico.Text = Convert.ToString(gvBuscarPopup.GetRowValues(gvBuscarPopup.FocusedRowIndex, "Nro_Pronostico"));
        }

     

        protected void dgExcel_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
         
        }

        protected void dgExcel_PageIndexChanged1(object sender, EventArgs e)
        {
            dgExcel.DataSource = ds;
            dgExcel.DataBind();
        }

        protected void dgExcel_CustomUnboundColumnData(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDataEventArgs e)
        {
          
        }

        protected void ASPxButton2_Click(object sender, EventArgs e)
        {
            //listaTabla.Clear();
           
        }

    

        protected void btnFormatoExcel_Click(object sender, EventArgs e)
        {


            
            try
            {
            string filepath = "Archivos Excel\\Formato\\Modelo_carga.xls";

            string filename = "Modelo_carga.xls";
            Response.Clear();

            Response.ContentType = "application/vnd.ms-excel";

            Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);

            Response.Flush();

            Response.WriteFile(filepath);

            Response.End();
            }
            catch
            {
            
            }
           

        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            txtnumeroPronostico.Text = "";
        }

    

        protected void btnPdfExport_Click(object sender, EventArgs e)
        {
            this.MostrarDatosReporte();
            
            GridViewExport.WritePdfToResponse();
        }

        protected void btnXlsExport_Click(object sender, EventArgs e)
        {
            GridViewExport.WriteXlsToResponse();
        }

        protected void btnRtfExport_Click(object sender, EventArgs e)
        {
            GridViewExport.WriteRtfToResponse();
        }

        protected void btnCsvExport_Click(object sender, EventArgs e)
        {
            GridViewExport.WriteCsvToResponse();
        }

     

     


   }

}